home *** CD-ROM | disk | FTP | other *** search
/ Chip 2007 January, February, March & April / Chip-Cover-CD-2007-02.iso / Pakiet bezpieczenstwa / mini Pentoo LiveCD 2006.1 / mpentoo-2006.1.iso / livecd.squashfs / usr / include / libol / list.h.x < prev    next >
Text File  |  2005-10-16  |  3KB  |  130 lines

  1. #ifndef CLASS_DEFINE
  2. struct list_header
  3. {
  4.   struct ol_object super;
  5.   unsigned length;
  6.   unsigned allocated;
  7.   int (*(add))(struct list_header *self, struct ol_object *s);
  8. };
  9. extern struct ol_class list_header_class;
  10. #endif /* !CLASS_DEFINE */
  11.  
  12. #ifndef CLASS_DECLARE
  13. struct ol_class list_header_class =
  14. { STATIC_HEADER,
  15.   0, "list_header", sizeof(struct list_header),
  16.   NULL,
  17.   NULL
  18. };
  19. #endif /* !CLASS_DECLARE */
  20.  
  21. #ifndef CLASS_DEFINE
  22. struct int_list
  23. {
  24.   struct list_header super;
  25.   int ((elements)[1]);
  26. };
  27. extern struct ol_class int_list_class;
  28. #endif /* !CLASS_DEFINE */
  29.  
  30. #ifndef CLASS_DECLARE
  31. struct ol_class int_list_class =
  32. { STATIC_HEADER,
  33.   &list_header_class, "int_list", sizeof(struct int_list),
  34.   NULL,
  35.   NULL
  36. };
  37. #endif /* !CLASS_DECLARE */
  38.  
  39. #ifndef CLASS_DEFINE
  40. struct object_list
  41. {
  42.   struct list_header super;
  43.   struct ol_object *((elements)[1]);
  44. };
  45. extern struct ol_class object_list_class;
  46. #endif /* !CLASS_DEFINE */
  47.  
  48. #ifndef CLASS_DECLARE
  49. static void do_object_list_mark(struct ol_object *o, 
  50. void (*mark)(struct ol_object *o))
  51. {
  52.   struct object_list *i = (struct object_list *) o;
  53.   {
  54.   unsigned k;
  55.   for (k=0; k<i->super.length; k++)
  56.     mark((struct ol_object *) (i->elements)[k]);
  57. }
  58. }
  59.  
  60. struct ol_class object_list_class =
  61. { STATIC_HEADER,
  62.   &list_header_class, "object_list", sizeof(struct object_list),
  63.   do_object_list_mark,
  64.   NULL
  65. };
  66. #endif /* !CLASS_DECLARE */
  67.  
  68. #ifndef CLASS_DEFINE
  69. struct string_list
  70. {
  71.   struct list_header super;
  72.   struct ol_string *((elements)[1]);
  73. };
  74. extern struct ol_class string_list_class;
  75. #endif /* !CLASS_DEFINE */
  76.  
  77. #ifndef CLASS_DECLARE
  78. static void do_string_list_mark(struct ol_object *o, 
  79. void (*mark)(struct ol_object *o))
  80. {
  81.   struct string_list *i = (struct string_list *) o;
  82.   {
  83.   unsigned k;
  84.   for (k=0; k<i->super.length; k++)
  85.     mark((struct ol_object *) (i->elements)[k]);
  86. }
  87. }
  88.  
  89. struct ol_class string_list_class =
  90. { STATIC_HEADER,
  91.   &list_header_class, "string_list", sizeof(struct string_list),
  92.   do_string_list_mark,
  93.   NULL
  94. };
  95. #endif /* !CLASS_DECLARE */
  96.  
  97. #ifndef CLASS_DEFINE
  98. struct sorted_list
  99. {
  100.   struct list_header super;
  101.   int flags;
  102.   ol_keyof_fn keyof;
  103.   ol_compare_fn compare;
  104.   int (*(search))(struct sorted_list *self, void *, unsigned *);
  105.   struct ol_object *((elements)[1]);
  106. };
  107. extern struct ol_class sorted_list_class;
  108. #endif /* !CLASS_DEFINE */
  109.  
  110. #ifndef CLASS_DECLARE
  111. static void do_sorted_list_mark(struct ol_object *o, 
  112. void (*mark)(struct ol_object *o))
  113. {
  114.   struct sorted_list *i = (struct sorted_list *) o;
  115.   {
  116.   unsigned k;
  117.   for (k=0; k<i->super.length; k++)
  118.     mark((struct ol_object *) (i->elements)[k]);
  119. }
  120. }
  121.  
  122. struct ol_class sorted_list_class =
  123. { STATIC_HEADER,
  124.   &list_header_class, "sorted_list", sizeof(struct sorted_list),
  125.   do_sorted_list_mark,
  126.   NULL
  127. };
  128. #endif /* !CLASS_DECLARE */
  129.  
  130.